package com.briup.day09;

import com.sun.xml.internal.ws.addressing.WsaActionUtil;

/**
 * @author lining
 * @date 2024/1/18 16:14
 */
public class TestInteger {
    //parseInt toString valueOf  to进制String
    public void method(){
        //1.创建java.lang.Integer包装类对象
        Integer i = new Integer(1);
        Integer i2 = new Integer("1");
        //2.调用静态方法
        //转化为二进制显示（补码）
        String num = Integer.toBinaryString(-8);
        System.out.println(num);
        //String 转 int
        int num2 = Integer.parseInt("1234");
        //int --->String
        int a = 100;
        String s2 = a+"";
        System.out.println("s2:"+s2);
        String s3 = Integer.toString(a);
        System.out.println("s3:"+s3);
        //valueof 将int/string---》Integer
        Integer b = Integer.valueOf(300);
        Integer b2 = Integer.valueOf("300");
        Integer b3 = Integer.valueOf("a", 16);
        System.out.println("b3:"+b3);
    }

    public void method2(){
        Integer i = new Integer(1);//value=1
        Integer i2 = new Integer(10);//value=10
        System.out.println(i.equals("a"));//类型不同，返回false
        System.out.println(i.equals("1"));//类型不同，返回false
        System.out.println(i.equals(i2));//比较包装的数值大小
        //转换方法将 Integer类型转换为其他整型和浮点型
        double v = i.doubleValue();
        long l = i.longValue();
    }
    public void method3(){
        //1.创建浮点数的包装类对象
        Double d = new Double(1.1);
        Double d2 = new Double("1.1");
        //Double 转换 String
        String s = Double.toString(1.1);
        //String 转换 double
        double v = Double.parseDouble(s);
        //double/String --->Double
        Double v1 = Double.valueOf("3.1415");
        System.out.println(d.equals(d2));//true 比较数值的大小
    }
    public void method4(){
        //自动装箱对应的包装类型：int--->Integer
        Integer i = 1;
        //自动拆箱对应的基本类型：Integer --->int
        int num = new Integer(1);
        Long n = new Long(1);
        long n2 =  n;
//        int n3 = n;编译错误
    }
    public void method5(){
        //因为可以自动装箱
        Integer a = 100;//cache[i] 从缓存数组中获取
        Integer b = 100;//cache[i] 从缓存数组中获取
        System.out.println(a == b);//true  都是从运行时常量池获取到Integer缓存数组的元素
        Integer a2 = 1000;//超过范围，堆中自己创建Integer对象
        Integer b2 = 1000;//超过范围，堆中自己创建Integer对象
        System.out.println(a2 == b2);//false  从堆中比较2个不同对象的地址值
    }
    public void method6(){
        Integer i = new Integer(100);//创建堆空间
        Integer i2 = 100;//从常量池缓存数组中已经创建Integer
        Integer i3 = new Integer(100);//创建堆空间
        System.out.println(i == i2);//false
        System.out.println(i == i3);//false
    }
    public void method7(){
        Integer i = new Integer(1000);//创建堆空间
        Integer i2 = 1000;//创建堆空间
        Integer i3 = new Integer(1000);//创建堆空间
        Integer i4 = 1000;//创建堆空间
        System.out.println(i == i2);//false
        System.out.println(i == i3);//false
        System.out.println(i2== i4);//false
    }
    public static void main(String[] args) {
        TestInteger t = new TestInteger();
        t.method7();
    }
}
